﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>写注册表 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 写注册表 function writes a value to the registry." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>写注册表</h1>

<p>写入值到注册表.</p>

<pre class="Syntax"><span class="func">写注册表</span> Value, ValueType, KeyName <span class="optional">, ValueName</span>
<span class="func">写注册表</span> Value <span class="optional">, ValueType, , ValueName</span>
</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Value</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a>或<a href="../Concepts.htm#numbers">整数</a></p>
    <p>要写入的值. 如果文本较长, 可以通过<a href="../Scripts.htm#continuation">延续片段</a>的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.</p>
  </dd>

  <dt>ValueType</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>必须为 REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ, REG_DWORD 或 REG_BINARY 的其中一个.</p>
    <p>只有在 <em>KeyName</em> 省略和<a href="LoopReg.htm">注册表循环</a>中项目是值时, 才能省略 <em>ValueType</em>, 如下所示.</p>
  </dd>

  <dt>KeyName</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>注册表键的全名.</p>
    <p>必须以 HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_USER, HKEY_CLASSES_ROOT 或 HKEY_CURRENT_CONFIG(或这些的缩写, 如 HKLM) 开始. 要访问<a href="LoopReg.htm#remote">远程注册表</a>, 请在前面加上计算机名和斜杠, 就像在本例中一样: \\workstation01\HKEY_LOCAL_MACHINE</p>
    <p>只有在<a href="LoopReg.htm">注册表循环</a>时, 才能省略 <em>KeyName</em>, 在这种情况下, 默认为当前循环项目的键. 如果项目是子键, 则默认使用该子键的全名. 如果项目是值, <em>ValueType</em> 和 <em>ValueName</em> 默认为值的类型和名称, 但是可以被重写.</p>
  </dd>

  <dt>ValueName</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>要写入的值的名称. 如果为空或省略, 将删除键的默认值(除了上面提到的). 默认值在  RegEdit 中显示为 "(默认)".</p>
  </dd>

</dl>

<h2 id="Error_Handling">错误处理</h2>
<p>失败时抛出异常.</p>
<p><a href="../Variables.htm#LastError">内_错误代码</a> 被设置为操作系统 GetLastError() 函数返回的结果.</p>

<h2 id="Remarks">备注</h2>
<p>如果 <em>KeyName</em> 指定的子键不存在, 写注册表 将尝试创建它(如果需要, 还将创建它的父键). 虽然 写注册表 可以直接写入根键, 但是一些操作系统可能会拒绝写入到 HKEY_CURRENT_USER 的顶层.</p>
<p>如果 <em>ValueType</em> 为 REG_DWORD, 则 <em>Value</em> 应该介于 -2147483648 和 4294967295(0xFFFFFFFF) 之间. 在注册表中, REG_DWORD 值总是表示为正的十进制数. 若要使用 <a href="RegRead.htm">读注册表</a> 等方法将其作为负数读取, 请使用 <code>OutputVar := OutputVar &lt;&lt; 32 &gt;&gt; 32</code> 类似方法将其转换为带符号的 32 位整数.</p>
<p>写入 REG_BINARY 键时, 请使用十六进制的字符串, 例如 REG_BINARY 值 01,a9,ff,77 可以使用字符串 01A9FF77 写入.</p>
<p>写入 REG_MULTI_SZ 键时, 你必须使用换行符(`n) 分隔各个部分. 最后一个部分后面的换行符是可选的. 不允许存在空的部分. 换句话说, 在一行中不能连续指定两个换行符(`n`n), 因为这样会导致写入到注册表的值比期望的短.</p>
<p>要检索和操作多个注册表键或值, 请考虑使用<a href="LoopReg.htm">注册表循环</a>.</p>
<p>有关如何访问远程计算机注册表的详情, 请参阅<a href="LoopReg.htm#remote">注册表循环</a>中的备注.</p>
<p>从 32 位脚本中读取或写入注册表的 64 位部分中的条目, 反之亦然, 请使用 <a href="SetRegView.htm">设置注册表视图</a>.</p>

<h2 id="Related">相关</h2>
<p><a href="RegDelete.htm">删除注册表项</a>, <a href="RegDeleteKey.htm">删除注册表键</a>, <a href="RegRead.htm">读注册表</a>, <a href="LoopReg.htm">注册表循环</a>, <a href="SetRegView.htm">设置注册表视图</a>, <a href="IniWrite.htm">配置写</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>写注册表 "Test Value", "REG_SZ", "HKEY_LOCAL_MACHINE\SOFTWARE\TestKey", "MyValueName"
写注册表 "01A9FF77", "REG_BINARY", "HKEY_CURRENT_USER\Software\TEST_APP", "TEST_NAME"
写注册表 "Line1`nLine2", "REG_MULTI_SZ", "HKEY_CURRENT_USER\Software\TEST_APP", "TEST_NAME"</pre>
</div>

</body>
</html>